In order to prevent data from being intercepted by unintended recipients, encryption is often used in order to encode messages or information in such a way that unauthorized parties are unable to access the data even while it is traversing unsecured networks such as the Internet. In typical encryption schemes, the unencrypted messages or information, referred to as plaintext, is encrypted using an encryption algorithm, transforming the plaintext data into an unreadable (e.g., to unintended recipients) ciphertext. Encryption is typically performed with the use of an encryption key, which is used to encode the messages in such a way that it practically unreasonable (e.g., in some case practically impossible) to decode the messages without additional information such as knowledge of the encryption key or other information detailing how the information was encoded. For example, an adversary that accesses the ciphertext should be unable to determine anything about the original plaintext message without access to a decryption key. An authorized party, however, is able to decode the ciphertext using a decryption algorithm that usually requires a secret decryption key that adversaries do not have access to. Depending on the type of encryption/decryption algorithms being used, the encryption and decryption keys may be the same (e.g., symmetric key cryptography) or different (e.g., asymmetric key cryptography).
Different types of encryption/decryption techniques may be used depending on the type of data to be protected. For example, serial communication systems may be characterized by sending data sequentially over a communication channel or computer bus. When serial communication is used, the communicated data is typically sent and received in a predetermined sequence or order, and out-of-sequence delivery can adversely affect the ability of the receiver to properly reconstruct the transmitted data. Examples of serial communication systems include RS-232 (e.g., a personal computer serial port), RS-422, RS-423, RS-485, Serial Peripheral Interface (SPI), Universal Serial Bus (USB), FireWire, Ethernet, Peripheral Component Interconnect (PCI), PCI Express, Synchronous Optical Networking (SONET), Synchronous Digital Hierarchy (SDH), MIL-STD-1553, etc.
Traditionally, serial data has often been encrypted/decrypted using stream cryptography such as a stream cipher. A stream cipher may be an example of a symmetric key cipher where plaintext digits are combined with a pseudorandom cipher digit stream (e.g., a keystream). In a stream cipher each plaintext digit may be encrypted in sequence with the corresponding digit of the keystream, to produce a digit of the ciphertext stream. Stream ciphers may also be referred to as a state cipher, as the encryption of each digit is dependent on the current state of the encryptor. In practice, a digit is typically a bit and the combining operation is often an exclusive-or (XOR) digital operation. The pseudorandom keystream is typically generated serially from a random seed value, for example using digital shift registers. The seed value may also serve as the cryptographic key for decrypting the ciphertext stream.
Block ciphers represent a different approach to encryption than stream ciphers. Block ciphers typically operate on large blocks of digits with a fixed, unvarying transformation. For example, a block cipher may be implemented using a deterministic algorithm operating on fixed-length groups of bits (e.g., blocks) with an unvarying transformation that is specified by a secret key (e.g., a symmetric key). Many modern encryption protocols such as the Advanced Encryption Standard (AES), Blowfish, RC5, International Data Encryption Algorithm (IDEA), etc. are examples of block ciphers.
Over the last few decades there has been a shift in communications from serial streams of data to packetized flows of data. For example, prior to the mid-1990s, most computers used dial-up networking over analog modems to reach the Internet over the Public Switched Telephone Networks (PSTNs). The flow of data through an analog modem is an example of a serial stream. Since then, most networking systems have switched to frame based flows such as Ethernet, Wi-Fi, or 3G/4G cellular communications. Due to the proliferation of packetized communication in recent decades, block ciphers have become increasingly prevalent and are more widely used than stream ciphers, especially in systems using packetized communication such as the Internet. This has caused the focus of the research of the majority of cryptographic algorithm developers to shift from algorithms that process data streams (e.g., stream cryptography) to algorithms that process data packets (e.g., block cryptography).
As a result, many existing stream algorithms have not been updated or have even been declared obsolete, but also have not been replaced. However, new and improved block algorithms are still active areas of research and development. In response to the shift from stream to block encryption, workarounds have been introduced that attempt to adapt block algorithms to process stream data; however, these workarounds often introduce additional overhead due to the framing of the stream data. Further overhead may also be generated due to the inclusion of crypto synchronization data in the encrypted stream. In addition, many existing workarounds can seriously degrade Radio Frequency (RF) link performance in the presence of noise, as even small errors in the transmitted ciphertext, user data framing, or Cryptosync data can result in error propagation during the decoding process, distorting entire blocks or even entire frames of data at the receiver. For this reason there has been wide resistance among users of radio frequency links, for example tactical data links, to implement modern block ciphering.